# -*- coding: utf-8 -*-
# time: 2025/4/9 14:01
# file: his01.py
# author: hanson
"""
案例：
会话读取历史 :对话缓存 + 摘要
"""
import redis
from langchain.memory import ConversationSummaryMemory
from langchain_community.chat_message_histories import RedisChatMessageHistory
from langchain_ollama import ChatOllama

# 配置Redis连接参数
REDIS_URL = "redis://:1234qwer@192.168.6.43:6379/6"  # 密码前加冒号

# 1. 创建基础消息存储
# chat_memory 从其他会话读取历史
chat_memory = RedisChatMessageHistory(
    session_id="user123",
    key_prefix="lang:history",
    url=REDIS_URL  # Redis连接
)
print(f"历史记录：{chat_memory.messages}")
# 创建带摘要的记忆系统
memory = ConversationSummaryMemory.from_messages(
    llm=ChatOllama(model="qwen2.5:1.5b"),
    chat_memory=chat_memory,  # 必须提供chat_memory参数
    memory_key="chat_history",
    return_messages=True
)

# 2. 保存对话
memory.save_context(
    {"input": "LangChain是什么？"},
    {"output": "用于开发AI应用的框架"}
)
memory.save_context(
    {"input": "它有什么优势？"},
    {"output": "模块化设计，集成多种工具"}
)

# 3. 获取带摘要的历史
print(memory.load_memory_variables({})["chat_history"])

# 查看当前摘要
print(memory.load_memory_variables({}))
# 输出示例：[SystemMessage(content="对话摘要：用户询问了LangChain的定义和优势...")]